Technical Q&A QA1328
Server Processes and the Dock


Q:Java アプリケーションをバックグラウンドプロセスとして実行していますが、AWT 呼び出しを行うと、アイコンが Dock に表示されます。このため、現在のユーザが Finder からサーバを終了したり、ログアウトしたりできてしまいます。これを防ぐにはどうすればよいでしょうか。

A:Mac OS X 上の Java 1.4.1 では、AWT を初期化すると、AppKit(Cocoa)runloop が作成され、これにより、特に問題となるアプリケーションメニューと Dock アイコンが自動的に作成されます。これは通常、ログインユーザとは無関係に実行しようとするシェルスクリプトベースのサーバアプリケーションで問題になります。新しい Dock エントリによって、アプリケーションが現在のログインユーザの制御下に置かれてしまうからです。

この状況を避けるためには、Java 1.4 の新機能であるヘッドレスモードでアプリケーションを実行する必要があります。java.awt.headless システムプロパティを true に設定すると、この望ましくない副作用なしに、アプリケーションで AWT のリソースを使えるようになります。発生するあらゆる HeadlessException を処理するために、コードを少し変更する必要があります。Java アプリケーションでのヘッドレスサポートの使用に関する詳細は、Sun のヘッドレスサポートについての説明を参照してください。


[2004 年 1 月 19 日]